<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    function curlGet($url)
    { 
 
        $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL,$url); 
        curl_setopt($ch, CURLOPT_HEADER, 0); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
        $data = curl_exec($ch); 
        curl_close($ch); 
 
        return $data; 
    }

    public function p($data){
        echo '<pre>';
        print_r($data);
        echo '</pre>';
    }

    // public function curlGet($ch){
    //     //初始化
    // 　　$ch = curl_init();
    // 　　//设置选项，包括URL
    // 　　curl_setopt($ch, CURLOPT_URL, "http://www.jb51.net");
    // 　　curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // 　　curl_setopt($ch, CURLOPT_HEADER, 0);
    // 　　//执行并获取HTML文档内容
    // 　　$output = curl_exec($ch);
    // 　　//释放curl句柄
    // 　　curl_close($ch);
    // 　　//打印获得的数据
    // 　　return $output;
    // }

    // //需要传2参!!
    // public function curlPost(){
    //     $url = "http://localhost/web_services.php";
    // 　　$post_data = array ("username" => "bob","key" => "12345");
    // 　　$ch = curl_init();
    // 　　curl_setopt($ch, CURLOPT_URL, $url);
    // 　　curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // 　　// post数据
    // 　　curl_setopt($ch, CURLOPT_POST, 1);
    // 　　// post的变量
    // 　　curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    // 　　$output = curl_exec($ch);
    // 　　curl_close($ch);
    // 　　//打印获得的数据
    // 　　return $output;
    // }

    private function _getAccessToken() {
        $where = array('token'=>$this->token);
        // $this->thisWxUser = M('Wxuser')->where($where)->find();
        $url_get = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx757b5c5c83be3c3d&secret=e2de29c5a53b0ecc14c627fe06aa7d5c';
        $json = json_decode($this->curlGet($url_get));
        
        if (!$json->errmsg) {
        } else {
            // $this->error('获取access_token发生错误：错误代码'.$json->errcode.',微信返回错误信息：'.$json->errmsg);
            var_dump('获取access_token发生错误：错误代码'.$json->errcode.',微信返回错误信息：'.$json->errmsg);
        }
        return $json->access_token;
    }

    public function index_InterfaceAccessNo(){
        $access_token = $this->_getAccessToken();

        var_dump('access_token=>'.$access_token.'</br>session[wecha_id]=>'.$_session['wecha_id'].'<br>');

        $subscribe_msg = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$access_token.'&openid='.$_session['wecha_id'];
        $subscribe = json_decode($this->curlGet($subscribe_msg));

        var_dump('subscribe=>'.$subscribe.'</br>');

        $zyxx = $subscribe->subscribe;

        if ($zyxx !== 1) {
        echo'未关注！';
        }
    }

    public function index()
    {
        var_dump('进入index函数');
        $timestamp =$_GET['timestamp'];
        $nonce     =$_GET['nonce'];
        $token     ='weixin';
        $signature =$_GET['signature'];
        $echostr   =$_GET['echostr'];
        $array = array($timestamp, $nonce, $token);
        sort($array);
//2、将排序后的三个参数拼接之后用sha1加密
        $tmpstr = implode('', $array);
        $tmpstr = sha1($tmpstr);
//3、将加密后的字符串与signature进行对比，判断该请求是否来自微信
        if ($tmpstr == $signature&&$echostr) {
            //第一次接入微信api接口的时候
            echo $_GET['echostr'];
            exit;
        }else{
            $this->responseMsg();
        }
    }

    // public function index_responseMsg(){
    //     $this->responseMsg();
    // }


    //接受事件推送并回复消息
    public function responseMsg(){
        var_dump('进入respsonseMsg函数</br></br>');
        //获取微信推送过来的post数据（xml数据）php://input
        $postArr=file_get_contents("php://input");

        /*
        <xml>
             <ToUserName><![CDATA[toUser]]></ToUserName>
             <FromUserName><![CDATA[fromUser]]></FromUserName>
             <CreateTime>1348831860</CreateTime>
             <MsgType><![CDATA[text]]></MsgType>
             <Content><![CDATA[this is a test]]></Content>
             <MsgId>1234567890123456</MsgId>
        </xml>
        */
        //处理消息类型并设置回复的消息内容和类型
        $postObj=simplexml_load_string($postArr);

        var_dump('</br></br>URL=>'.strtolower($postObj->URL));
        var_dump('</br></br>ToUserName=>'.strtolower($postObj->ToUserName));
        var_dump('</br></br>FromUserName=>'.strtolower($postObj->FromUserName));
        var_dump('</br></br>CreateTime=>'.strtolower($postObj->CreateTime));
        var_dump('</br></br>Content=>'.strtolower($postObj->Content));
        var_dump('</br></br>MsgId=>'.strtolower($postObj->MsgId));

        var_dump('</br></br>MsgType=>'.strtolower($postObj->MsgType));
        var_dump('</br></br>Event=>'.strtolower($postObj->Event));



        //判断该数据包是不是订阅的事件推送
        if(strtolower($postObj->MsgType)=='event'){
            var_dump('</br></br>订阅推送</br></br>');
            //如果是关注subscribe
            // if(strtolower($postObj->Event)=='heeh4zd'){
                //回复用户消息
                $toUser=$postObj->FromUserName;
                $fromUser=$postObj->ToUserName; 
                $time    =time();
                $msgType ='text';
                $content ='欢迎关注tb的公众号！';
                $template="
                            <xml>
                                <ToUserName><![CDATA[%s]]></ToUserName>
                                <FromUserName><![CDATA[%s]]></FromUserName>
                                <CreateTime>%s</CreateTime>
                                <MsgType><![CDATA[%s]]></MsgType>
                                <Content><![CDATA[%s]]></Content>
                            </xml>";
                $info=sprintf($template,$toUser,$fromUser,$time,$msgType,$content);
                // var_dump($info);
                echo  $info;

            // }
        }
        //纯文本回复消息
        if(strtolower($postObj->MsgType=='text')){
            var_dump('</br></br>纯文本回复消息</br></br>');
            if($postObj->Content=='菜单'){
                $toUser=$postObj->FromUserName;
                $fromUser=$postObj->ToUserName;
                $time    =time();
                $msgType ='text';
                $content ='这里是修的PHP-菜单!
回复 "历史" 查看历史文章!
回复 "推荐" 查看我推荐的大牛写的文章!
回复 "关于" 查看个人资料!';   //可以写成一个超链接$content="<a href="www.baidu.com">百度</a>";
                $template="
                            <xml>
                                <ToUserName><![CDATA[%s]]></ToUserName>
                                <FromUserName><![CDATA[%s]]></FromUserName>
                                <CreateTime>%s</CreateTime>
                                <MsgType><![CDATA[%s]]></MsgType>
                                <Content><![CDATA[%s]]></Content>
                            </xml>";
                $info=sprintf($template,$toUser,$fromUser,$time,$msgType,$content);
                var_dump('</br></br>$info=>',$info);
                echo  $info;
            }
            //用户发送一个tuwen1关键字的时候回复一个单图文
            if(strtolower($postObj->MsgType=='text') && strtolower($postObj->Content=='tuwen1')){
                var_dump('</br></br>tuwen1关键字</br></br>');

                $toUser=$postObj->FromUserName;
                $fromUser=$postObj->ToUserName;
                $arr=array(
                    array(
                    'title'=>'唐波的主页',
                    'description'=>'tb is good boy!',
                    'picUrl'=>'http://119.29.160.15/serverpic/elephant.jpg',
                    'url'=>'http://www.baidu.com'
                    ),
                );
                $template="<xml>
                                <ToUserName><![CDATA[%s]]></ToUserName>
                                <FromUserName><![CDATA[%s]]></FromUserName>
                                <CreateTime>%s</CreateTime>
                                <MsgType><![CDATA[%s]]></MsgType>
                                <ArticleCount>".count($arr)."</ArticleCount>
                                <Articles>";
                                foreach($arr as $k=>$v){
                     $template.="<item>
                                <Title><![CDATA[".$v['title']."]]></Title>
                                <Description><![CDATA[".$v['description']."]]></Description>
                                <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
                                <Url><![CDATA[".$v['url']."]]></Url>
                                </item>";
                                }
                      $template.="</Articles>
                             </xml>";
                $info=sprintf($template,$toUser,$fromUser,time(),'news');
                echo  $info;
            }
        }


    }

}